// 1. 导入定义store函数
import { defineStore } from 'pinia'
import { ref } from 'vue'
import type { User } from '@/types/login'

// 2. 生成获取store的方法=> 语法：const useXxxStore = defineStore('唯一名字', 回调函数, 设置插件)
const useUserStore = defineStore(
  'user-store',
  () => {
    // 1. 用户数据（将来登录成功使用）
    // 说明：空对象默认值需要断言指定类型
    const user = ref({} as User)
    const test = ref(false)
    // 2. 存储数据方法
    // 思考🤔？：将来登录成功使用
    const setUser = (_user: User) => {
      user.value = _user
    }

    // 3. 删除数据
    // 思考🤔？：退出登录
    const delUser = () => {
      user.value = {} as User
    }

    return { user, setUser, delUser, test }
  },
  // 插件配置
  // 1. 默认存储方式=》存所有
  // {
  //   persist: true // 开启数据持久化=》store中所有变量发生变化，都会自动存到本地localStorage
  // }
  // 2. 自定义存储=》指定存储的名字 + 指定存那个变量
  {
    persist: {
      key: 'login-user', // 指定存储的名字
      paths: ['user', 'test'] // 指定存那个变量=> ['变量名1', '变量名2'...]
    }
  }
)

// 3. 导出获取store方法
// 说明：默认导出只能有一个
export { useUserStore }
